/*
    This file is part of Darwin.

    Darwin is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    Foobar is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Foobar; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    
    Darwin uses GALib
    Copyright (c) 1995-1996 Massachusetts Institute of Technology (MIT)
    Copyright (c) 1996-2005 Matthew Wall
    All rights reserved.
    
    Darwin uses ConfigFile
    Copyright (c) 2004 Richard J. Wagner
     
    Darwin, a Genetic Algorithm to solve Timetabling problem
    Copyright (c) 2006 Christian S. Perone
*/  

#if !defined(__GENERAL_H)
#define __GENERAL_H

#include <cassert>
#include <iostream>
#include <vector>
#include <map>


// GALib 2.4.6
// URL: http://lancet.mit.edu/galib-2.4/
#include <ga/ga.h>

// MySQL++ 2.1.1 
// URL: http://tangentsoft.net/mysql++
#include <mysql++/mysql++.h>
#include <mysql++/custom.h>

// Google SparseHash
// #include <google/dense_hash_map>
// #include <google/sparse_hash_map>

using std::cout;
using std::endl;

#define CONFIG_NAME "main.conf"

typedef unsigned int uint;

/// Constant Errors
namespace errors
{
     /// Error while connecting   
     const int ERROR_CONNECT = -1;
};

/// Weekdays
namespace weekdays
{
     /// Segunda=1, terca=2, etc...
     enum { SEGUNDA=0, TERCA, QUARTA, QUINTA, SEXTA, SABADO };

}

namespace turnos
{
     enum { NOITE=1, TARDE_NOITE, MANHA_NOITE };

     enum { TAMANHO=32 };

     enum { MANHA_BEGIN=0, MANHA_END=11 };
     enum { TARDE_BEGIN=12, TARDE_END=21 };
     enum { NOITE_BEGIN=22, NOITE_END=31 };
}

namespace turnos_tamanho
{
     enum { NOITE=10, TARDE_NOITE=20, MANHA_NOITE=22 };

}
          

#endif
